SUSTITUCIÓN
(Actual y Potencial)

“El método por el cual la matemática obtiene sus ecuaciones es el método de sustitución” (Wittgenstein, Tractatus 6.24)

“Llamamos representación a toda realidad que sustituye, imita o refleja a otra” (Wittgenstein)

“Nombrar es tener individualidad” (Nikolái Luzin)



Sustitución Actual

Semántica

Sustituir una expresión x por la expresión y, de tal forma que, a partir de este momento, las apariciones de x se sustituyen automáticamente por y, es decir, que x se evalúe como y.


Sintaxis

(x = y) // sustituir x por y


Justificación

La sustitución es la forma de especificar el cambio o modificación de expresiones a lo largo del tiempo.


Ejemplos
  1. (x = "abc")
    (u x x v) // ev. (u "abc" "abc" v)

  2. (x = 5)
    (x = x+1) // ev. x=6

  3. ("ab" = "abcd")
    (u "ab" "ab" v) // ev. (u "abcd" "abcd” v)

  4. (33 = mesa)
    (1 2 33) // ev. (1 2 mesa)

  5. (3 = mesa)
    33 // ev. (mesa mesa)

  6. (u = ⟨(x y x+y)⟩)
    (u u+1) // ev. (⟨(x y x+y)⟩ ⟨(x y x+y)⟩+1)

  7. ( ⟨(x y x+y)⟩ = 6 )
    ⟨(x y x+y)⟩*2 // ev. 12

  8. (x+y = 12)
    (a x+y b x+y) // ev. (a 12 b 12)

Observaciones
Sustituciones jerarquizadas

Las especificaciones de sustitución pueden estar jerarquizadas, es decir, las expresiones izquierda y derecha pueden ser, a su vez, especificaciones de sustitución. Ejemplos:
  1. (x = (y = 7)) // en el lado derecho
    (1 x 2) // ev. (1 y=7 2)

  2. ((x = 5) = 3) // en el lado izquierdo
    (x=5 x=5 3) // ev. (3 3 3)

  3. ((x = 3) = (y = 7)) // en ambos lados
    (x=3 1 2 3) // ev. (y=7 1 2 3)

Restauración de una expresión

Para restaurar una expresión a su estado de autoevaluación, a la que se ha definido previamente una sustitución mediante (x = y), se puede hacer mediante (x° = x°). Ejemplo:

(x = 33) // definir sustitución
x // x se evalúa como 33
(x° = x°) // restaurar la autoevaluación de x
x // x se autoevalúa


Expresiones imaginarias

Cuando la expresión izquierda de una especificación de sustitución es una expresión compuesta, tenemos expresiones imaginarias. El ejemplo más paradigmático es la unidad imaginaria i, definida como (i^2 = −1). Otro ejemplo es la definición de infinitésimo (ε^2 = 0). [ver Lenguaje MENTAL – Expresiones – Expresiones Imaginarias]. Ejemplos:
  1. (i^2 = −1)
    (i^2 23) // ev. (−1 23)

  2. (ε*ε = 0)
    (ε^2 13) // ev. (0 13)

  3. (x+y+z = a*b)
    (x+y+z 1 2 3) // ev. (a*b 1 2 3)

Sustitución relativa

Es una especificación de sustitución x=y que se aplica exclusivamente a una expresión z. Su forma es z/(x=y).

Si la sustitución puede aplicarse, la expresión de sustitución desaparece (se dice que la expresión de sustitución “se resuelve”). Si no puede aplicarse, la expresión de sustitución se autoevalúa y se mantiene en el resultado. Ejemplos:
  1. (u = (x y x z))
    u/(x = ab) // ev. (ab y ab z)

  2. (u = (x b y))
    u/(x=ab)/(b=4) // ev. (ab b y)/(b=4) ev. (a4 4 y)
    En este caso se aplican dos sustituciones relativas sucesivamente.

  3. (u = (x b y))
    u/((x=ab) (b=4)) // ev. (a4 4 y)
    Este ejemplo es equivalente al anterior.

  4. (u = (x b y))
    u/((b=4) (x=ab)) // ev. (ab b y)
    Es el mismo caso anterior, pero aplicando las sustituciones en orden inverso. El resultado es diferente.

  5. (u = (x y))
    u/(z=2) // ev. (x y)/(z=2)
    En este caso no puede aplicarse la sustitución.

  6. (u = (x y))
    u/(x=1 z=2) // ev. (1 y)/(z=2)
    En este caso se resuelve la primera sustitución, pero no la segunda.

  7. (u = (x b y))
    u/{x=ab b=4} // ev. (ab 4 y)
    En este caso se aplican las dos sustituciones simultáneamente.

Eliminación de expresiones

La expresión (x = θ) específica sustituir x por la expresión nula, es decir, eliminar x. La eliminación es, pues, un caso particular de la sustitución. Ejemplos:
  1. (u = (x y x z))
    (x = θ)
    u // ev. (θ y θ z) ev. yz

  2. (u = (x y x z))
    (x=θ y=θ)
    u // ev. z

  3. (u = (x y z))
    u/(v=θ) // ev. (x y z)/(v=θ)

Tipos de expresiones y sustitución

La expresión (x = α) es útil por ejemplo para definir tipos de expresiones. Por ejemplo, si tenemos la secuencia concreta

z=(x a x)

y hacemos x=α, entonces z se evalúa como (α a α), es decir, z es entonces un tipo de expresión: una secuencia de tres componentes cuyo segundo componente es a.


Axiomas
  1. ⟨(x = x)⟩

    A menos que se indique otra cosa (mediante una especificación de sustitución), toda expresión se autoevalúa, es decir, se sustituye por sí misma.

  2. ⟨( (x = y) → (y = z) → (x = z) )⟩ // transitividad

    Ejemplo:

    ((a = b) (b = c)) // implica (a = c)
    a // ev. c
    b // ev. c
    c // ev. c (se autoevalúa)

  3. ⟨( x/(u=v)/(v=w) ≡ x/(u=v v=w) ≡ x/(u=w) )⟩

Expresiones terminales y no terminales

Una expresión es terminal si no se ha definido una expresión de sustitución para ella, o bien está definida pero la parte derecha de la expresión de sustitución es igual a la izquierda.

Una expresión es no terminal si existe una expresión de sustitución para ella y la expresión derecha es diferente de la izquierda.

Para saber si una expresión x es terminal o no, basta con comparar x con y ver si son iguales:

("x es una expresión terminal" ← (x° = x) →' "x es una expresión no terminal")

Ejemplo:

(a = 1) // a es no terminal, 1 es terminal (se autoevalúa)

(b° = b°) // b es terminal
(c = 3*4) // c es no terminal, 3 y 4 son terminales (se autoevalúan)


Variables

Un caso particular de especificación de sustitución es cuando la expresión izquierda es un nombre.

Este caso corresponde al de las variables de los lenguajes de programación tradicionales, pero aquí la operación genérica de sustitución se interpreta como "nombrar" una expresión (la del lado derecho de la expresión de sustitución) y no como “asignación” de un valor a una posición de memoria representada por el nombre.

Es la llamada “interpretación nominal”. La operación “nombrar” es un mecanismo que nos permite, de una forma cómoda, referirnos a algo que puede ser simple o complejo. El nombre es una especie de llave que nos permite acceder o un fragmento de información. Se trata de un mecanismo psicológico muy empleado por la economía de especificación que supone.

En un entorno dinámico, un mismo nombre puede hacer referencia en un cierto momento a una expresión y posteriormente a otra expresión diferente.


Expresiones de sustitución genéricas

Las expresiones de sustitución genéricas pueden ser parametrizadas o no.

Ejemplos de expresiones genéricas de sustitución no parametrizadas:
  1. ⟨(x = a*b)⟩
    (a = 2)
    (b = 3)
    x // ev. 6
    (b = 4)
    x // ev. 8

  2. ⟨(a+b = c)⟩
    (c = 6)
    (1 a+b 2) // ev. (1 6 2)
    (c = 7)
    (1 a+b 2) // ev. (1 7 2)
Ejemplos de expresiones genéricas de sustitución parametrizadas:
  1. ⟨(f(x y) = x+y)⟩
    f(3 4) // ev. 7

  2. ⟨((x a) = b)⟩
    (u a) // ev. b
    (v a) // ev. b

Sustitución Potencial

Semántica

La sustitución potencial es un tipo de sustitución que tiene las características siguientes:
Sintaxis

(x =: y) // x representa a y


Justificación

La sustitución potencial se justifica porque hay situaciones en las que no es deseable una evaluación inmediata de x, como por ejemplo:
Ejemplos
  1. (a =: b)
    a // se autoevalúa, pero representa a b

    b // ev. a (b se evalúa como su representante: a)

  2. (a+a =: 3+3) // ev. (2*a =: 6)
    (2*a + 5) // ev. 11

  3. (a =: 1+2+3+4) // ev. (a =: 10)
    a // a se autoevalúa, pero representa a 10

  4. (a = b)
    (a =: u) // ev. (b =: u)
    b // rep. u

  5. (x =: a+b) // x representa a a+b
    (a=3 b=2)
    a+b // ev. 5
    x // se autoevalúa, pero representa a a+b = 3+2 = 5
    (a=6 b=8)
    x // se autoevalúa, y sigue representando a a+b = 6+8 = 14

  6. (a=3 b=2)
    (x =: a+b) // x representa a a+b = 3+2 = 5
    x // se autoevalúa, pero representa a 5

  7. ((a =: b) (b =: c))
    a // se autoevalúa
    b // ev. a
    c // ev. a

  8. (x+y+z =: a)
    a // ev. x+y+z

  9. (∞ =: ∞+1) // definición del infinito numerable (expresión recursiva)

  10. (a =: (1 8 9 56 43)
    a // se autoevalúa
    (a\3 a\5) //ev. (9 43)
Ejemplos que combinan los dos tipos de sustituciones:
  1. ((a =: b) (b = c))
    a // ev. a
    b // ev. c
    c // ev. c

  2. ((a = b) (b =: c))
    a // ev. b
    b // ev. b pero representa a c
    c // ev. b

  3. (tres = 3) // tres se evalúa como 3
    (tres tres tres) // ev. 333
    tres*11 // ev. 33
    (tres =: 3) // tres representa a 3
    (tres tres) // se autoevalúa y representa a 33

Observaciones
Axiomas
  1. ⟨(x =: x)⟩

    A menos que se indique otra cosa (mediante una especificación de sustitución), toda expresión se representa a sí misma.

  2. ⟨(x =: y)→(x =: y)→(x =: z)⟩ // transitividad

Sustitución Inicial

Semántica

Una sustitución inicial es una especificación de sustitución que aparece al cargar inicialmente el código en el espacio abstracto, pero cuya expresión desaparece en el momento de evaluación del código. Especifica un valor inicial de una expresión. Se aplica a los dos tipos de sustituciones (actual y potencial).


Sintaxis

(x := y) // sustitución actual inicial

(x :=: y) // sustitución potencial inicial


Ejemplos de sustituciones iniciales
  1. (Φ := 1.618033988)
    (proporción aúrea)

  2. (N := ( 0… ))
    (secuencia de los números naturales: (0 1 2 3 4 ...))

  3. (∞ :=: ∞+1)
    (definición del infinito numerable mediante una expresión recursiva)

Igualdad y desigualdad

Es posible preguntar si una expresión x es igual a otra y si se cumple la condición de x=y, es decir si x se sustituye por y.

z←(x=y) (aquí x=y no es sustitución, sino condición de igualdad)

La expresión (x =' y) o (xy) se puede utilizar como condición. Se define de la manera siguiente:

⟨( (z ← (x =' y)) =: (z ←' (x = y)) )⟩

Por ejemplo,

(a ← (x =' y)) representa a (a ←' (x = y))

Estas dos formas de condición valen también para la sustitución potencial.

La expresión (x ≠ y) se puede utilizar también como descripción. Por ejemplo,

(a ≠ b) (se establece que a es distinto de b)